export interface Meeting {
  id: string
  title: string
  description?: string
  status: 'recording' | 'processing' | 'completed'
  created_at: string
  updated_at: string
  duration?: number
}

export interface Transcript {
  id: string
  meeting_id: string
  text: string
  confidence?: number
  timestamp: string
  speaker?: string
  start_time?: number
  end_time?: number
}

export interface Minutes {
  id: string
  meeting_id: string
  content: string
  template?: string
  created_at: string
  updated_at: string
  status: 'generating' | 'completed' | 'failed'
}

export interface ApiResponse<T = any> {
  success: boolean
  data?: T
  message?: string
  error?: string
}

export interface HealthCheck {
  status: string
  timestamp: string
  meetings_count: number
  transcripts_count: number
  minutes_count: number
  whisper_model_loaded: boolean
  current_device: string
  preferred_gpu_device: number
  available_gpu_count: number
  gpu_available: boolean
}

export interface RecordingState {
  isRecording: boolean
  isPaused: boolean
  duration: number
  audioBlob?: Blob
  audioUrl?: string
}

export type UploadStatus = 'idle' | 'uploading' | 'processing' | 'completed' | 'failed'

export interface AudioUploadState {
  file: File
  status: UploadStatus
  progress: number
  result?: Transcript
  error?: string
}